import { ref } from 'vue';
import { getStore, setStore } from '@/utils/utils';
/**
 * 权限相关钩子函数
 * 提供将权限数据转换为一维数组的功能
 */
export default () => {
    const accessRight = ref<any[]>([]);

    /**
     * 获取权限列表并扁平化
     * @returns 包含所有权限项的一维数组
     */
    const flattenAccessRightList = async () => {
        // 如果已经有数据，直接返回
        if (accessRight.value.length !== 0) {
            return accessRight.value.map(item => ({
                id: item.code,
                code: item.code,
                description: item.code,
            }));
        }

        // 从sessionStorage获取权限数据
        let accessRightStr = getStore('sign_admin_userInfo').accessRightCodes;
        
        if (!accessRightStr) return [];

        try {
            // 解析权限数据
            const parsedData = accessRightStr;
            accessRight.value = parsedData;

            // 返回扁平化的权限项数组
            return parsedData.map((item: any) => ({
                id: item.code,
                code: item.code,
                description: item.code,
            }));
        } catch (error) {
            console.error('解析权限数据失败:', error);
            return [];
        }
    };

    /**
     * 获取所有权限代码的一维数组
     * @returns 包含所有权限代码的一维数组
     */
    const getAllPermissionCodes = async () => {
        const flattenedList = await flattenAccessRightList();
        return flattenedList.map((item: any) => item.code);
    };

    return {
        flattenAccessRightList,
        getAllPermissionCodes,
    };
};
